package Pojo;

/** Classe de Históricos referentes à Disciplina 
*
* @author Thiago Sousa Silveira
* 
* */

import java.io.Serializable;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
        
@Entity
public class Historico implements Serializable{
        /** Código do Histórico */
	@Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer id;
	
	/** Nota Final do Histórico */
	private double notaFinal;
	
	/** Número de Faltas */
	private int numeroDeFaltas;
	
	/** Aluno do Histórico */
        @JoinColumn(name="ALUNO_ID",referencedColumnName="ID")
        @ManyToOne
	private Aluno aluno;
	
	/** Disciplina do Histórico */
        @JoinColumn(name="DISCIPLINA_ID",referencedColumnName="ID")
        @ManyToOne
	private Disciplina disciplina;

        /**
         * Construtor exigido pelos annotations
         */
        public Historico() {
        }
	       
	/** Construtor da Classe sem relacionamento
	 * 
	 * @param id				Id do Histórico
	 * @param notaFinal			Nota final na disciplina
	 * @param numeroDeFaltas	Número de faltas na disciplina
	 */
	public Historico(int id, double notaFinal,int numeroDeFaltas){
		this.setId(id);
		this.setNotaFinal(notaFinal);
		this.setNumeroDeFaltas(numeroDeFaltas);
	}
        
        /** Construtor da Classe sem relacionamento sem id 
	 * 
	 * @param notaFinal			Nota final na disciplina
	 * @param numeroDeFaltas	Número de faltas na disciplina
	 */
	public Historico(double notaFinal,int numeroDeFaltas){
		this.setNotaFinal(notaFinal);
		this.setNumeroDeFaltas(numeroDeFaltas);
	}
	
	/** Construtor da Classe com relacionamento
	 * 
	 * @param notaFinal			Nota final na disciplina
	 * @param numeroDeFaltas	Número de faltas na disciplina
	 */
	public Historico(double notaFinal,int numeroDeFaltas, Aluno aluno, Disciplina disciplina){
		this(notaFinal,numeroDeFaltas);
		this.setDisciplina(disciplina);
		this.setAluno(aluno);
	}
	
	/** Sobrescrita do método toString
	 * 
	 * @return String com os dados da classe
	 */
	@Override
	public String toString(){
		return(this.getId()+"\t"+this.getNotaFinal()+"\t"+this.getNumeroDeFaltas()+"\t"+this.getAluno().getId()+"\t"+this.getDisciplina().getId()+"\n");
	}

	/** Getter de id
	 * 
	 * @return int com o Id Historico
	 */
	public int getId() {
		return id;
	}

	/** Setter de id
	 * 
	 * @param id
	 */
	public void setId(int id) {
		this.id = id;
	}

	/**Getter de NotaFinal do Histórico
	 * 
	 * @return double com NotaFinal
	 */
	public double getNotaFinal() {
		return notaFinal;
	}

	/**Setter de NotaFinal do Histórico
	 * 
	 * @param notaFinal
	 */
	public void setNotaFinal(double notaFinal) {
		this.notaFinal = notaFinal;
	}

	/**Getter de Número de Faltas
	 * 
	 * @return int com Número de Faltas
	 */
	public int getNumeroDeFaltas() {
		return numeroDeFaltas;
	}

	/**Setter de Número de Faltas
	 * 
	 * @param numeroDeFaltas
	 */
	public void setNumeroDeFaltas(int numeroDeFaltas) {
		this.numeroDeFaltas = numeroDeFaltas;
	}

	/**Getter de Aluno do Histórico
	 * 
	 * @return Aluno com o Aluno referente ao histórico.
	 */
	public Aluno getAluno() {
		return aluno;
	}

	/**Setter de Aluno do Histórico
	 * 
	 * @param aluno
	 */
	public void setAluno(Aluno aluno) {
		this.aluno = aluno;
	}

	/** Getter de Disciplina do Histórico
	 * 
	 * @return Disciplina com a Disciplina do Histórico.
	 */
	public Disciplina getDisciplina() {
		return disciplina;
	}

	/**Setter de Disciplina do Histórico
	 * 
	 * @param disciplina
	 */
	public void setDisciplina(Disciplina disciplina) {
		this.disciplina = disciplina;
	}
}

